C++ 如何重载操作符<=

来源:百度知道 编辑:UC知道 时间:2024/06/04 11:58:24
Merge 要求针对类型T定义一个操作符<=,实现T c[] 和T d[]的比较

template<class T>
class Sorts
{
public:
void Merge(T c[],T d[],int l,int m,int r);
};
……
template<class T>
void Sorts<T>::Merge(T c[],T d[],int l,int m,int r)
{
……
}

{
template<class T>
void Sorts<T>::Merge(T c[],T d[],int l,int m,int r) //此为二路归并排序的一个方法,l,m,r分别指左值,中间值,右值
{
int i=l,j=m+1,k=r;
while((i<=m)&&(j<=r))
{
if(c[i]<=c[j])
d[k++]=c[i++];
else
d[k++]=c[j++];
}
if(i>m)
{
for(int q=j;q<=r;q++)
d[k++]=c[q];
}
else
{
for(int q=i;q<=m;q++)
d[k+1]=c[q];
}
}

int operator <=(T a,T b)
{
//将数组的值个数保存在a[0],b[0]里
if(a[0]>b[0])return 1;
if(a[0]<b[0])return -1;//先行判断
for(int i=1;i<=n;i++){
if(a[i]>b[i])return 1;
if(a[i]<b[i])return -1;//比对
}
return 1;
}

有些细节没处理好,比如说条件的判定,自己改一下吧。

请问参数int l,int m,int r分别代表什么含义?